package com.fzh.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.fzh.pojo.entity.Cart;

public interface CartMapper {
	
	/**
	 * 查询所有的购物车信息
	 * @param setValue
	 * @param limit
	 * @param f_uid
	 * @param f_pid
	 * @return
	 */
	public List<Cart> selectAllCart(@Param("setValue")Integer setValue,@Param("limit")Integer limit,@Param("f_uid")String f_uid,@Param("f_pid")String f_pid);
	
	/**
	 *  查询出总条数
	 * @param f_uid
	 * @param f_pid
	 * @return
	 */
	public int selectCounts(@Param("f_uid")String f_uid,@Param("f_pid")String f_pid);
	
	/**
	 * 添加一个购物车
	 * @param cart
	 * @return
	 */
	public int insertCart(Cart cart);

	/**
	 * 修改购物的信息
	 * @param cart
	 * @return
	 */
	public Integer updateCartById(Cart cart);

	/**
	 * 根据ids批量删除购物车
	 * @param ids
	 * @return
	 */
	public Integer deleteAllCartByIds(List<String> ids);
	
	/**
	 * 根据id删除单个的购物车
	 * @param id
	 * @return
	 */
	public Integer deleteCartById(Integer id);

	/**
	 * {前台}查询出对应用户的购物车
	 * @param id
	 * @return
	 */
	public List<Cart> selectCartByUserIdF(Integer id);

	/**
	 * {前台}查询出对应用户的购物车商品的数量
	 * @param id
	 * @return
	 */
	public String selectCartCountByUserIdF(Integer id);

	/**
	 * {前台}查询出对应用户的购物车商品的总金额
	 * @param id
	 * @return
	 */
	public String selectCartTotalSumByUserIdF(Integer id);

	/**
	 * {前台}当点击购物车栏×时删除该用户下的对应商品
	 * @param productId
	 * @param userId
	 */
	public Integer deleteCartProductByUserIdAndProductIdF(@Param("productId")Integer productId, @Param("userId")Integer userId);

	/**
	 * {前台}从商品详情页面添加一个购物车商品
	 * @param cart
	 * @return
	 */
	public Integer insertCartByUserIdAndProductIdF(Cart cart);

	/**
	 * {前台}从商品详情页面添加一个购物车商品前先查询一下这个商品是否已经有了，如有了就行修改他的数量
	 * @param userId
	 * @param productId
	 * @return
	 */
	public Cart selectCartByUserIdAndProductIdF(@Param("userId")Integer userId, @Param("productId")Integer productId);

	/**
	 * {前台}查询出所有的购物车信息，根据用户id和商品的ids
	 * @param userId  用户的id
	 * @param ids  商品的ids
	 * @return
	 */
	public List<Cart> selectCartByUserIdAndProductIds(List<String> ids);

	/**
	 * {前端}添加订单后进行购物车清空
	 * @param userId
	 */
	public void deleteCartByUserId(Integer userId);
	
	/**
	 * {前端}根据选中得购物车id查询
	 * @param userId
	 */
	public List<Cart> selectCartByIds(String[] ids);
}
